home *** CD-ROM | disk | FTP | other *** search
/ Tech Arsenal 1 / Tech Arsenal (Arsenal Computer).ISO / tek-02 / tagr26e.zip / TAGR26E.H < prev    next >
C/C++ Source or Header  |  1993-04-27  |  54KB  |  1,156 lines

  1. /*****************************************************************************/
  2. /* T.A.G. Bulletin Board System                                              */
  3. /* Copyright (c) 1986-1993 by The T.A.G. Team                                */
  4. /* All rights reserved.                                                      */
  5. /*                                                                           */
  6. /*                    -----------------------------------                    */
  7. /*                    T.A.G. Version 2.6e Data Structures                    */
  8. /*                    -----------------------------------                    */
  9. /*             Converted from Turbo Pascal to C by Martin Pollard            */
  10. /*                                                                           */
  11. /* All we ask if you use these record structures is to give credit where     */
  12. /* credit is due.                                                            */
  13. /*                                                                           */
  14. /* Additional structure information may be given out on an individual        */
  15. /* basis depending on the situation.                                         */
  16. /*                                                                           */
  17. /* RELEASE HISTORY:                                                          */
  18. /*                                                                           */
  19. /* 01/24/93 - Initial release.                                               */
  20. /* 02/17/93 - Corrected errors in definitions for SystatRec, ModemRec, and   */
  21. /*            MboardType.                                                    */
  22. /* 04/27/93 - Re-Released without change for version 2.6e (Paul Williams)    */
  23. /*                                                                           */
  24. /*---------------------------------------------------------------------------*/
  25. /*                                                                           */
  26. /* NOTES TO PROGRAMMERS:                                                     */
  27. /*                                                                           */
  28. /* Turbo Pascal strings are formatted differently than C strings:            */
  29. /*                                                                           */
  30. /*      Turbo Pascal:   length byte + string data                            */
  31. /*      C:              string data + '\0' (zero)                            */
  32. /*                                                                           */
  33. /* You will have to write conversion routines to convert strings back and    */
  34. /* forth between TP and C formats if you wish to use strings.                */
  35. /*                                                                           */
  36. /* Also, C has no direct equivalent to Turbo Pascal's "real" type for real   */
  37. /* numbers (C's "float" and "double" do not use the same format).  If you    */
  38. /* wish to use real numbers, you will have to write conversion routines.     */
  39. /*                                                                           */
  40. /* NOTE THAT THERE IS NO ATTEMPT HERE TO TEACH YOU HOW TO ACCESS T.A.G. DATA */
  41. /* FILES USING THE C LANGUAGE.  IT IS ASSUMED THAT YOU ALREADY KNOW HOW TO   */
  42. /* PROGRAM IN C, AND ARE FAMILIAR WITH THE INS AND OUTS OF ACCESSING FIXED-  */
  43. /* LENGTH RECORD DATA FILES (SUCH AS THE ONES T.A.G. USES).                  */
  44. /*                                                                           */
  45. /*****************************************************************************/
  46.  
  47. #ifndef __TAGREC_H      /* Prevents header from being included */
  48. #define __TAGREC_H      /* twice in the same program or module */
  49.  
  50. typedef unsigned char Boolean;  /* C equivalent for TP "boolean" type */
  51.                                 /* (0 is FALSE, non-0 is TRUE)        */
  52. typedef unsigned char Byte;     /* C equivalent for TP "byte" type */
  53. typedef unsigned char Char;     /* C equivalent for TP "char" type  */
  54.                                 /* (ensures values in 0..255 range) */
  55. typedef int Integer;            /* C equivalent for TP "integer" type */
  56. typedef long Longint;           /* C equivalent for TP "longint" type */
  57. typedef unsigned int Word;      /* C equivalent for TP "word" type */
  58.  
  59. typedef unsigned char Real[6];  /* C has no equivalent for TP "real" type! */
  60.  
  61. typedef unsigned int Bit;       /* shorthand operator for bit fields   */
  62.                                 /* (ensures returning positive values) */
  63.  
  64. /*---------------------------------------------------------------------------*/
  65.  
  66. /***************************************************************************/
  67. /* The following values are used by the system for user fields             */
  68. /* "ask"  values will be asked of the user the next time they logon if the */
  69. /*        question is part of the new user logon                           */
  70. /* "none" values are normally for optional fields where the user simply    */
  71. /*        pressed <enter>                                                  */
  72. /***************************************************************************/
  73.  
  74. #define USER_STRING_ASK     " "     /* Ask for user string fields */
  75. #define USER_STRING_NONE    ""      /* None for user string fields */
  76. #define USER_DATE_ASK       0xFE21  /* Ask for user date fields - 1/1/2027 */
  77. #define USER_DATE_NONE      0x0021  /* None for user date fields - 1/1/0 */
  78. #define USER_WORD_ASK       65535U  /* Ask for user word fields */
  79. #define USER_WORD_NONE      65534U  /* None for user word fields */
  80. #define USER_CHAR_ASK       '~'     /* Ask for user character fields */
  81. #define USER_CHAR_NONE      ' '     /* None for user character fields */
  82. #define USER_PHONE_ASK      " "     /* Ask for user phone fields */
  83. #define USER_PHONE_NONE     ""      /* None for user phone fields */
  84.  
  85. /*---------------------------------------------------------------------------*/
  86.  
  87. #define DYN_DEFAULT     0           /* Default */
  88. #define DYN_YES         1           /* Yes */
  89. #define DYN_NO          2           /* No */
  90.  
  91. typedef Byte DefaultYesNoType;     /* Default/yes/no type */
  92.  
  93. typedef Char ArFlagType;        /* AR flags (@..Z) */
  94. typedef Byte ArFlagset[4];      /* Set of AR flags                 */
  95.                                 /* Byte 0 = bits 0..7 = Flags @..G */
  96.                                 /* Byte 1 = bits 0..7 = Flags H..O */
  97.                                 /* Byte 2 = bits 0..7 = Flags P..W */
  98.                                 /* Byte 3 = bits 0..2 = Flags X..Z */
  99.  
  100. typedef struct      /* User special flags */
  101. {
  102.     Bit AutoPrivDel : 1;    /* A = Force user to delete private mail */
  103.     Bit NoPostCall : 1;     /* B = No post call ratio */
  104.     Bit ForceULScan : 1;    /* C = Force this user to automatically scan */
  105.                             /*     when uploading */
  106.     Bit Ranon : 1;          /* D = Restrict from posting anonymous */
  107.     Bit RbbsList : 1;       /* E = Restrict from adding to other BBS list */
  108.     Bit Rchat : 1;          /* F = Restrict from chatting */
  109.     Bit NoDLlimit : 1;      /* G = No download ratio limit */
  110.     Bit RpubMsg : 1;        /* H = Restrict from posting public mail */
  111.     Bit RprivMsg : 1;       /* I = Restrict from sending private mail */
  112.     Bit Rvoting : 1;        /* J = Restrict from voting */
  113.     Bit OneCall : 1;        /* K = One call per day allowed */
  114.     Bit PubNotVal : 1;      /* L = Public posts are not validated */
  115.     Bit ProtDel : 1;        /* M = Protect from deletion */
  116.     Bit NoFilePts : 1;      /* N = No file point checks */
  117.     Bit RfileVal : 1;       /* O = Credit from upload on validation */
  118.     Bit Pause : 1;          /* P = [PAUSE] active */
  119.     Bit Ansi : 1;           /* Q = ANSI graphics active */
  120.     Bit Color : 1;          /* R = Color active if ANSI present */
  121.     Bit OneKey : 1;         /* S = Onekey input used instead of line input */
  122.     Bit Alert : 1;          /* T = Alert active from user's next call */
  123.     Bit FlagRecUnused : 1;  /* U = Reserved */
  124.     Bit MboxClosed : 1;     /* V = Mail box closed to all but SysOp's */
  125.     Bit Tabs : 1;           /* W = VT100 tabs are used to optimize display */
  126.     Bit ClsChar : 1;        /* X = Clear screen characters used */
  127. }
  128. FlagSet;    /* 3 bytes used for 24 flags in set */
  129.  
  130. typedef struct
  131. {
  132.     Bit IsCdRom : 1;
  133.     Bit uuUlRecFlag1 : 1;
  134.     Bit uuUlRecFlag2 : 1;
  135.     Bit uuUlRecFlag3 : 1;
  136.     Bit uuUlRecFlag4 : 1;
  137.     Bit uuUlRecFlag5 : 1;
  138.     Bit uuUlRecFlag6 : 1;
  139.     Bit uuUlRecFlag7 : 1;
  140. }
  141. UlRecFlagSet;
  142.  
  143. typedef struct      /* User configuration flags */
  144. {
  145.     Bit UseCustomMenus : 1;     /* A = Allow custom ANSI menus */
  146.     Bit ClsMsgRead : 1;         /* B = Clear screen between reading messages */
  147.     Bit DoNotDisturbUser : 1;   /* C = Do not disturb user (multi-user only) */
  148.     Bit uuCFFlag21 : 1;         /* D = Reserved */
  149.     Bit uuCFFlag20 : 1;         /* E = Reserved */
  150.     Bit uuCFFlag19 : 1;         /* F = Reserved */
  151.     Bit uuCFFlag18 : 1;         /* G = Reserved */
  152.     Bit uuCFFlag17 : 1;         /* H = Reserved */
  153.     Bit uuCFFlag16 : 1;         /* I = Reserved */
  154.     Bit uuCFFlag15 : 1;         /* J = Reserved */
  155.     Bit uuCFFlag14 : 1;         /* K = Reserved */
  156.     Bit uuCFFlag13 : 1;         /* L = Reserved */
  157.     Bit uuCFFlag12 : 1;         /* M = Reserved */
  158.     Bit uuCFFlag11 : 1;         /* N = Reserved */
  159.     Bit uuCFFlag10 : 1;         /* O = Reserved */
  160.     Bit uuCFFlag9 : 1;          /* P = Reserved */
  161.     Bit uuCFFlag8 : 1;          /* Q = Reserved */
  162.     Bit uuCFFlag7 : 1;          /* R = Reserved */
  163.     Bit uuCFFlag6 : 1;          /* S = Reserved */
  164.     Bit uuCFFlag5 : 1;          /* T = Reserved */
  165.     Bit uuCFFlag4 : 1;          /* U = Reserved */
  166.     Bit uuCFFlag3 : 1;          /* V = Reserved */
  167.     Bit uuCFFlag2 : 1;          /* W = Reserved */
  168.     Bit uuCFFlag1 : 1;          /* X = Reserved */
  169. }
  170. ConfigFlagSet;      /* 3 bytes used for 24 flags in set */
  171.  
  172. /************************************************/
  173. /* ColorRec = Array of B&W / Color  Color Bytes */
  174. /************************************************/
  175.  
  176. typedef Byte ColorRec[2][10];   /* ColorRec[0][x] = B&W          */
  177.                                 /* ColorRec[1][x] = Color        */
  178.                                 /* x = 0..9 = Actual Color Codes */
  179.  
  180. /*---------------------------------------------------------------------------*/
  181.  
  182. typedef struct      /* User name index - NAMES.LST */
  183. {
  184.     Char Name[37];      /* User name */
  185.     Integer Number;     /* User number */
  186. }
  187. SmalRec;
  188.  
  189. /*---------------------------------------------------------------------------*/
  190.  
  191. typedef struct      /* User log - USER.LST */
  192. {
  193.     Char Uname[37];             /* User name */
  194.     Char Rname[37];             /* Real name */
  195.     Char ADDR[31];              /* Address */
  196.     Char ComType[31];           /* Computer type */
  197.     Char CityState[31];         /* City/State */
  198.     Char Snote[31];             /* SysOp note */
  199.  
  200.     Word LastDate;              /* Last date on - Semi-MS-DOS 1900 based fmt */
  201.     Word LastTime;              /* Last time on - MS-DOS format */
  202.  
  203.     Char PW[17];                /* Password */
  204.     Char Phone[13];             /* Phone number 1 */
  205.     Char Zcode[11];             /* Zip code */
  206.     Char Phone2[13];            /* Phone number 2 */
  207.  
  208.     Char ExtraStr1[41];         /* Extra string 1 */
  209.     Char ExtraStr2[41];         /* Extra string 2 */
  210.     Char ExtraStr3[41];         /* Extra string 3 */
  211.  
  212.     Word ExtraDate1;            /* Extra date 1 - Semi-MS-DOS 1900 based fmt */
  213.     Word ExtraDate2;            /* Extra date 2 - Semi-MS-DOS 1900 based fmt */
  214.  
  215.     Word ExtraWord1;            /* Extra word 1 */
  216.     Word ExtraWord2;            /* Extra word 2 */
  217.     Word ExtraWord3;            /* Extra word 3 */
  218.     Word ExtraWord4;            /* Extra word 4 */
  219.  
  220.     Char ExtraChar1;            /* Extra character 1 */
  221.     Char ExtraChar2;            /* Extra character 2 */
  222.     Char ExtraChar3;            /* Extra character 3 */
  223.     Char ExtraChar4;            /* Extra character 4 */
  224.  
  225.     Char ExtraPhone[13];        /* Extra phone */
  226.  
  227.     Byte uureserved[3];         /* Reserved */
  228.  
  229.     /*************************************************************/
  230.     /* Vote  = An array of Voting Answers, One for each question */
  231.     /*************************************************************/
  232.  
  233.     Byte Vote[20];              /* Voting */
  234.  
  235.     /**********************************************************************/
  236.     /* Call spread for last 15 calls - Number  of days between each call: */
  237.     /* 0      = Called the same day                                       */
  238.     /* 1..253 = X number of days between                                  */
  239.     /* 254    = 254 or more days between                                  */
  240.     /* 255    = Element not used yet                                      */
  241.     /**********************************************************************/
  242.  
  243.     Byte CallSpr[15];           /* Call spread */
  244.  
  245.     Real Ttimeon;               /* Total time on system in minutes */
  246.     Real UlK;                   /* UL K-Bytes */
  247.     Real Dlk;                   /* DL K-Bytes */
  248.  
  249.     /**********************************************************/
  250.     /* UserNum = The User number                              */
  251.     /*           0  -----------------------------> Deleted    */
  252.     /*           Same as Record Number ----------> Normal     */
  253.     /*           Different from Record Number ---> Locked Out */
  254.     /**********************************************************/
  255.  
  256.     Integer UserNum;            /* User number */
  257.  
  258.     Word PrivPost;              /* Private posts */
  259.     Word PubPost;               /* Public posts */
  260.     Word FeedBack;              /* Feedback sent to SysOp */
  261.     Word NumCalls;              /* Total number of calls to system */
  262.     Word NumUL;                 /* Number of uploads */
  263.     Word NumDL;                 /* Number of downloads */
  264.  
  265.     /*********************************************************/
  266.     /* Fmail = Status of Mail Forwarding                     */
  267.     /*           0  --------> Forwarding inactive            */
  268.     /*           Other  ----> User Number to forward mail to */
  269.     /*********************************************************/
  270.  
  271.     Integer Fmail;              /* Forward mail to which user number */
  272.  
  273.     Word Hbaud;                 /* Highest baud rate user supports */
  274.     Word TimeToday;             /* Minutes on system date of last call */
  275.     Word Credit;                /* Credit for mail in cents */
  276.     Word Debit;                 /* Debit for mail in cents */
  277.     Word Points;                /* File points */
  278.     Word TimeBank;              /* Minutes in time bank */
  279.     Word Bday;                  /* Birthdate of user - Semi-MS-DOS format */
  280.     Word LastChange;            /* Reserved */
  281.  
  282.     Byte StrtMenu;              /* Reserved */
  283.     Byte SL;                    /* Security level - SL */
  284.     Byte DSL;                   /* Download security level - DSL */
  285.     Byte Hlvl;                  /* Help level */
  286.     Byte Colms;                 /* Number of screen columns */
  287.     Byte Lines;                 /* Number of screen lines */
  288.     Byte Callstoday;            /* Number of calls to system today */
  289.     Byte Illegal;               /* Illegal logon attempts */
  290.  
  291.     Char Gender;                /* User gender M/F/' '=not specified */
  292.  
  293.     Byte uulMsgBase;            /* Last message base */
  294.     Byte uuLdlBase;             /* Last file section */
  295.     Byte Cls;                   /* Reserved */
  296.  
  297.     DefaultYesNoType FullEdit;  /* Full screen editor status */
  298.  
  299.     ArFlagset Ar;               /* AR flag set */
  300.  
  301.     FlagSet Flags;              /* Special flag set */
  302.  
  303.     Word FirstOn;               /* Date first on - Semi-MS-DOS format */
  304.     Word Expires;               /* Date expires - Semi-MS-DOS format */
  305.  
  306.     Byte UserRecUnused[29];     /* Reserved */
  307.  
  308.     ColorRec Colors;            /* User colors */
  309.  
  310.     Byte TBdeposit;             /* Time deposited in bank last call */
  311.     Byte TBwithdraw;            /* Time withdraw from bank last call */
  312.  
  313.     Integer AdjTime;            /* Adjusted time date of last call */
  314.  
  315.     ConfigFlagSet ConfigFlags;  /* Configuration Flags */
  316.  
  317.     Word lMbase;                /* Last message section */
  318.     Word lFbase;                /* Last file section */
  319.  
  320.     Byte Unused[5];             /* Reserved */
  321. }
  322. UserRec;
  323.  
  324. /*---------------------------------------------------------------------------*/
  325.  
  326. typedef struct      /* Short messages - SHORTMSG.DAT */
  327. {
  328.     Char Msg[161];      /* Message text */
  329.     Integer Destin;     /* User number of who message is to */
  330. }
  331. SmallMessageRec;
  332.  
  333. /*---------------------------------------------------------------------------*/
  334.  
  335. typedef struct      /* Voting questions - VOTING.DAT */
  336. {
  337.     Char Question[75];      /* Question */
  338.     Word NumA;              /* Number of answers in below array */
  339.     struct                  /* Array of answer data */
  340.     {
  341.         Char Ans[41];       /* Answer */
  342.         Word NumRes;        /* Number of users who chose this response */
  343.     }
  344.     Answ[10];
  345. }
  346. Vdatar;
  347.  
  348. /*---------------------------------------------------------------------------*/
  349.  
  350. typedef struct      /* File section - FBOARDS.DAT */
  351. {
  352.     Char Name[40];          /* Section name 26 Real Len, Rest Colors */
  353.     Char Filename[9];       /* Listing filename (does not include ".DIR")  */
  354.                             /*   If UL and DL paths are different,         */
  355.                             /*     filename for upload section is "FILES"  */
  356.                             /*   If first character is "@" then *.DIR file */
  357.                             /*     is found in main data files directory   */
  358.     Char DlPathname[31];    /* Download pathname */
  359.     Char UlPathName[31];    /* Upload pathname */
  360.     Char Password[16];      /* Password required */
  361.     UlRecFlagSet Flags;
  362.     Byte DSL;               /* DSL required */
  363.     Byte SeeNames;          /* DSL required to see uploader names */
  364.     ArFlagType ArLvl;       /* AR flag required */
  365.     Byte NoRatioGroupNum;   /* Bit 0    = Ratio disabled */
  366.                             /* Bits 1-7 = Group number */
  367. }
  368. UlRec;
  369.  
  370. /*---------------------------------------------------------------------------*/
  371.  
  372. typedef struct      /* Set of file flags */
  373. {
  374.     Bit NotValidated : 1;       /* File is not validated */
  375.     Bit OwnerRestricted : 1;    /* Uploader did not receive credit on upload */
  376.     Bit uuF6 : 1;               /* Reserved */
  377.     Bit uuF5 : 1;               /* Reserved */
  378.     Bit uuF4 : 1;               /* Reserved */
  379.     Bit uuF3 : 1;               /* Reserved */
  380.     Bit uuF2 : 1;               /* Reserved */
  381.     Bit uuF1 : 1;               /* Reserved */
  382. }
  383. FlagRecSet;     /* 1 byte used for 8 flags in set */
  384.  
  385. typedef struct      /* File listing - *.DIR */
  386. {
  387.     Char Filename[13];      /* File name */
  388.     Char Description[79];   /* Description */
  389.     Word Nacc;              /* Number of times file downloaded */
  390.     Byte Unused;            /* Reserved */
  391.     Word Blocks;            /* Number of 128 byte blocks in file */
  392.     Char Owner[37];         /* Uploader of file */
  393.     Char Date[9];           /* Date file uploaded */
  394.     Word DateN;             /* Date uploaded in days since Jan 1, 1985 */
  395.     FlagRecSet Flag;        /* File status */
  396.     Byte Points;            /* File points */
  397. }
  398. UlfRec;
  399.  
  400. /*---------------------------------------------------------------------------*/
  401.  
  402. #define NUMSHELLFILES       13  /* # currently defined internal shell files */
  403.  
  404. typedef struct
  405. {
  406.     DefaultYesNoType useswap;   /* Swap shell setting */
  407.     struct                      /* Shell file flags */
  408.     {
  409.         Bit shellshowcall : 1;
  410.         Bit shelllogcall : 1;
  411.     }
  412.     flags;
  413. }
  414. shellfilerec;
  415.  
  416. typedef shellfilerec                    /* Array of shell files */
  417.         shellfilelist[NUMSHELLFILES];
  418.  
  419. #define NUMNEWUSERQUESTS    29  /* Number of current new user questions */
  420.  
  421. typedef struct
  422. {
  423.     Byte itemnum;       /* Item number to ask or 0=inactive */
  424.     Boolean required;   /* Required/optional */
  425. }
  426. newuserquestrec;
  427.  
  428. typedef newuserquestrec                         /* Array of new   */
  429.         newuserquestlist[NUMNEWUSERQUESTS];     /* user questions */
  430.  
  431. typedef Word Range[256];    /* Range of values for all security levels */
  432.  
  433. /*****************************************************/
  434. /* Provide for full 4D awareness (And point support) */
  435. /*****************************************************/
  436.  
  437. typedef struct      /* Fidonet Style Address (23 Bytes) */
  438. {
  439.     Word Zone;          /* Zone, 1   = N. America */
  440.     Word Net;           /* Net,  120 = SE Michigan */
  441.     Word Node;          /* Node, 116 = CRIMP BBS */
  442.     Word Point;         /* Point, 99% of the time = 0 */
  443.     Char Domain[16];    /* As in FIDONET */
  444. }
  445. AddressType;
  446.  
  447. /*---------------------------------------------------------------------------*/
  448.  
  449. typedef struct      /* System status - STATUS.DAT */
  450. {
  451.     Char AltPath[41];           /* Alternate file path */
  452.     Char DictPath[41];          /* Dictionary path */
  453.  
  454.     Byte DefReadMsgMenu;        /* Wait screen read message menu */
  455.  
  456.     Boolean dynamicmsg;         /* Dynamic message numbering active */
  457.     Boolean dynamicfile;        /* Dynamic file numbering active */
  458.     Boolean waitscreendisable;  /* Wait screen activity disable */
  459.     Boolean requiredvoting;     /* Require voting when user logs on */
  460.  
  461.     Byte automsglines;          /* Auto message number of lines */
  462.     Byte uunewuserexpdays;      /* Reserved */
  463.     Byte addwordsl;             /* Add word to dictionary SL */
  464.  
  465.     Char expvalkey;             /* User expired validation key (#13=None) */
  466.  
  467.     Byte expwarning;            /* # of days to give warning before expires */
  468.     Byte modifymailflags;       /* Sl when allowed to modify mail flags */
  469.     Byte netmailfilerequest;    /* SL for NetMail file requests */
  470.     Byte netmailfileattach;     /* SL for NetMail file attach */
  471.  
  472.     Boolean ModemDebug;         /* Modem debug information written to log */
  473.     Boolean UseXMS;             /* Use XMS memory for swap shell */
  474.     Boolean ShowFilesOpen;      /* Show Files Open on Top Screen */
  475.     Boolean LocalSysopWindow;   /* SysOp window when on locally */
  476.     Boolean AllowSuperFast;     /* Allow SHIFT password override */
  477.     Boolean WaitSend;           /* FOSSIL buffer inactive */
  478.     Boolean OverlayEMS;         /* Attempt EMS of overlays */
  479.     Boolean EMSOverXMS;         /* Use EMS over XMS memory for swap */
  480.     Boolean DirectScreen;       /* Direct screen writes */
  481.     Boolean UseEMS;             /* Use EMS memory for swap shell */
  482.     Boolean useswap;            /* Use swap shell */
  483.     Boolean UseFossil;          /* Use FOSSIL driver */
  484.     Boolean SnowCheck;          /* Snow checking active */
  485.  
  486.     Byte BrowseDSL;             /* DSL to have U/D commands on */
  487.                                 /*   File Browse Menu          */
  488.  
  489.     Byte uusystatrec1[9];       /* Reserved */
  490.  
  491.     Char TempDlPath[41];        /* Temp File Download Path */
  492.  
  493.     Word MinKpost;              /* Minimum K-Bytes to post */
  494.     Word MinKul;                /* Minimum K-Bytes to upload */
  495.  
  496.     Boolean AutoChatBufOpen;    /* Auto chat buffer open */
  497.  
  498.     Char nettype[21];           /* Multi-user network type */
  499.  
  500.     Byte uusystatrec2[15];      /* Reserved */
  501.  
  502.     Byte LogonPassword;         /* SL when SysOp PW #1 needed to logon */
  503.     Byte ReadTextMsg;           /* SL when allowed to use /READ command */
  504.  
  505.     Boolean AlertChatOnly;      /* Alert active only when chat on */
  506.     Boolean genericinfo;        /* Generic mode active */
  507.     Boolean LogonPhone;         /* Logon requires phone number */
  508.  
  509.     Char DefMsgGroup[21];       /* Default msg section group mask */
  510.     Char DefFileGroup[21];      /* Default file section group mask */
  511.  
  512.     Byte uusystatrec3[13];      /* Reserved */
  513.  
  514.     Char LastCaller[43];        /* Name and number of last caller */
  515.  
  516.     Char MenuFastKeys[21];      /* Menu fast keys (e.g. "/") */
  517.  
  518.     Char BoardPW[17];           /* New user password (Null=None) */
  519.     Char BoardPhone[13];        /* Board phone number */
  520.  
  521.     Byte SysopColor;            /* Chat SysOp color */
  522.     Byte UserColor;             /* Chat user color */
  523.  
  524.     ArFlagType PostCallFlag;    /* Post call ratio AR flag */
  525.  
  526.     Byte NoPostCallChk;         /* SL when post call ratio ignored */
  527.     Byte ReinitTime;            /* Minutes to re-init modem when no calls */
  528.     Byte StartMenu;             /* Starting menu for users */
  529.  
  530.     Boolean UseAutoMsg;         /* Display auto-message during logon */
  531.     Boolean LogonOffHook;       /* Take phone off-hook on local logon */
  532.  
  533.     Byte NoPointChk;            /* DSL when file points ignored */
  534.  
  535.     Char LastDate[9];           /* Date last user logged on */
  536.  
  537.     AddressType Address;        /* Zone/Net/Node/Point/Domain */
  538.  
  539.     Boolean UserOn11x;          /* Use USERON.BBS version 1.1x */
  540.  
  541.     shellfilelist shellfile;    /* Shell file information */
  542.  
  543.     Byte uushellfile[10];       /* Reserved for shell files */
  544.  
  545.     newuserquestlist newuserquest; /* New user question information */
  546.  
  547.     Byte uunewuserquest[270];   /* Reserved */
  548.  
  549.     Byte ActiveModemRecNum;     /* Active Modem Record Number */
  550.  
  551.     Char MultiUserPath[41];     /* Multi-user path */
  552.  
  553.     Byte defusereditlist;       /* Default user editor list mode           */
  554.                                 /*   0=short, 1=normal, 2=extended, 3=info */
  555.  
  556.     Byte uusystatrec5[10];      /* Reserved */
  557.  
  558.     Char GfilesPath[41];        /* Main data files path */
  559.  
  560.     Boolean StoreBadLogon;      /* Store bad logon info in SysOp log */
  561.  
  562.     Byte MaxBdNum;              /* Maximum number of batch DL files */
  563.     Byte MaxBuNum;              /* Maximum number of batch UL files */
  564.  
  565.     Char BoardName[49];         /* Board name */
  566.  
  567.     Byte SysopMenuSL;           /* SL required for SysOp Control-Q menu */
  568.     ArFlagType SysopMenuAR;     /* AR flag required from Control-Q menu */
  569.  
  570.     Char SysopName[37];         /* SysOp name */
  571.  
  572.     Char SwapPath[41];          /* Swap shell path */
  573.  
  574.     Char ChatPW[17];            /* Chat password */
  575.  
  576.     Char LastTAGVersion[21];    /* Last version of TAG to run */
  577.  
  578.     Char nodelistpath[41];      /* Nodelist directory */
  579.  
  580.     Byte uusystatrec6[2308];    /* Reserved */
  581.  
  582.     Char SysopPW[3][17];        /* Array of SysOp passwords */
  583.  
  584.     Byte uusystatrec7[120];     /* Reserved */
  585.  
  586.     Real CallerNum;             /* Total number of calls to system */
  587.     Real UlKtoday;              /* K-Bytes uploaded today */
  588.     Real DlkToday;              /* K-Bytes downloaded today */
  589.     Real uur1;                  /* Reserved */
  590.     Real uur2;                  /* Reserved */
  591.     Real uur3;                  /* Reserved */
  592.  
  593.     Word Users;                 /* Number of active users */
  594.     Word ActiveToday;           /* Minutes active today */
  595.     Word Callstoday;            /* Calls today */
  596.     Word MsgPostToday;          /* Public messages posted today */
  597.     Word EmailToday;            /* Private messages posted today */
  598.     Word FbackToday;            /* Feedback sent to SysOp today */
  599.     Word UlToday;               /* Number of uploads today */
  600.     Word uuw1;                  /* Reserved */
  601.     Word uuw2;                  /* Reserved */
  602.     Word uuw3;                  /* Reserved */
  603.     Word MaxUsers;              /* Maximum users allowed to be active */
  604.     Word ErrorsToday;           /* Number of errors today */
  605.     Word NusersToday;           /* Number of new users today */
  606.     Word DlToday;               /* Number of downloads today */
  607.  
  608.     Integer NewUserMsgTo;       /* User number new user message sent to */
  609.     Integer uui1;               /* Reserved */
  610.     Integer SysopMailTo;        /* User number mail to "SYSOP" is sent to */
  611.     Integer GuestUser;
  612.     Integer FailedLogonMsgTo;   /* Guest user number (0=None) */
  613.     Integer uuw5;               /* Reserved */
  614.     Integer UsageLogDays;       /* Number of days to keep USAGE.LOG */
  615.     Integer WaitMailUser;       /* Mail waiting on wait screen (0=none) */
  616.  
  617.     Byte UEditJumpSL;           /* SL required for SysOp Control-U menu */
  618.     ArFlagType UEditJumpAR;     /* AR flag required from Control-U menu */
  619.  
  620.     Byte NoviceDisplay;         /* Number of calls to display novice msg */
  621.  
  622.     Byte NodeNumber;            /* Multi-user node number */
  623.  
  624.     Boolean UEditJumpPassword;  /* Use System pswd for Quick User Edit */
  625.     Boolean ScanOnUploads;      /* System permits forced scan on uploads */
  626.  
  627.     Word MaxTimeInBank;         /* Maximum minutes in time bank */
  628.  
  629.     Boolean ShowGifRes;         /* Show GIF resolution */
  630.     Boolean CheckUploadSpace;   /* Show upload drive space */
  631.     Boolean SystemSecur;        /* Full keyboard security active */
  632.     Boolean MultiUser;          /* Board in multi-user mode */
  633.  
  634.     Byte TBmaxDeposit;          /* Maximum daily time bank deposit */
  635.     Byte TBmaxWithdraw;         /* Maximum daily time bank withdraw */
  636.     Byte SysopLvl;              /* SL for SysOp */
  637.     Byte CoSysopLvl;            /* SL for CoSysOp */
  638.     Byte uub1;                  /* Reserved */
  639.     Byte AddBbsLvl;             /* SL for adding boards to bbs listing */
  640.     Byte EmailLvl;              /* SL for sending normal private mail */
  641.     Byte uub2;                  /* Reserved */
  642.     Byte uub3;                  /* Reserved */
  643.     Byte SeeUnvalLvl;           /* DSL for seeing unvalidated files */
  644.     Byte DlCoSysopLvl;          /* DSL for Download CoSysOp */
  645.     Byte NoRatioChk;            /* DSL for no ratio */
  646.     Byte ReadAnon;              /* SL to know see anonymous real name      */
  647.     Byte ReplyAnon;             /* SL to reply to anonymous private mail   */
  648.     Byte PublicAnonAny;         /* SL to post anonymous on any public base */
  649.     Byte PrivateAnonAny;        /* SL to send private anonymous mail       */
  650.     Byte MaxPublicCall;         /* Maximum public posts per call */
  651.     Byte MaxPrivCall;           /* Maximum private messages per call */
  652.     Byte MaxFbackCall;          /* Maximum feedback to SysOp per call */
  653.     Byte uub4;                  /* Reserved */
  654.     Byte SeePasswords;          /* SL to see user passwords remotely */
  655.     Byte uub5;                  /* Reserved */
  656.     Byte uub6;                  /* Reserved */
  657.     Byte ComPort;               /* Communications port */
  658.     Byte TimeOut;               /* Minutes for inactivity time-out */
  659.     Byte TimeOutBell;           /* Minutes for inactivity bell */
  660.     Byte Backlogdays;           /* Number of days to keep SYSOP.LOG's */
  661.     Byte PrivilegeSL;           /* Privilege SL */
  662.     Byte PrivilegeDSL;          /* Privilege DSL */
  663.     Byte CDmask;                /* Carrier detect mask */
  664.     Byte MaxLogonTries;         /* Maximum logon attempts per call */
  665.     Byte uub7;                  /* Reserved */
  666.     Byte uub8;                  /* Reserved */
  667.     Byte UlTimePercent;         /* UL time percent refund */
  668.     Byte MaxChats;              /* Maximum chat pages per call */
  669.     Byte uub9;                  /* Reserved */
  670.     Byte TagLineSL;             /* SL for tag line command */
  671.  
  672.     Boolean ClosedSystem;       /* System closed */
  673.     Boolean TitlePause;         /* Allow [PAUSE] on welcome screen */
  674.     Boolean LogonBulletin;      /* Logon to the bulletin section */
  675.     Boolean BlankWait;          /* Blank the wait screen if no activity */
  676.     Boolean Handles;            /* Allow handles */
  677.     Boolean AutoANSIDetect;     /* Logon auto-detect ANSI */
  678.     Boolean SecureSystem;       /* Keyboard security active */
  679.     Boolean TimePerDay;         /* Time limits represent time per day */
  680.     Boolean Mailer;             /* External mailer active */
  681.     Boolean SysopFemale;        /* SysOp is female */
  682.     Boolean scantosysoplog;     /* File scans are saved in SysOp log */
  683.  
  684.     Range TimeAllowed;          /* SL array of time per call/per day */
  685.     Range UlDlNumRatio;         /* DSL array of number of file UL ratios */
  686.     Range UlDlKratio;           /* DSL array of K-Byte UL ratios */
  687.     Range CallsAllowed;         /* SL array of calls allowed per day */
  688.     Range PostCall;             /* SL array of posts per 1/10 call */
  689.  
  690.     Byte uusystatrec8[8];       /* Reserved */
  691. }
  692. SystatRec;
  693.  
  694. /*---------------------------------------------------------------------------*/
  695.  
  696. typedef struct      /* Set of menu flags */
  697. {
  698.     Bit SLs : 1;        /* SL security check - When off DSL security check */
  699.     Bit OrCheck : 1;    /* SL or AR - When off SL and AR */
  700.     Bit Flag1 : 1;      /* Time/Help display (menu) -or- */
  701.                         /* Hidden status (command)       */
  702.     Bit Flag2 : 1;      /* Board display override (menu) -or- */
  703.                         /* Link to next (command)             */
  704.     Bit Flag3 : 1;      /* Menu name prompt (menu) -or- */
  705.                         /* Unused (command)             */
  706. }
  707. MenuFlagSet;    /* 1 byte used for 8 flags in set */
  708.  
  709. typedef struct      /* Menus - MENUS.LST */
  710. {
  711.     Char LongD[61];     /* Menu description (menu) -or- */
  712.                         /* Long command desc (command)  */
  713.     Byte GSL;           /* General security level - Depends on SLS */
  714.     ArFlagType ArLvl;   /* AR flag */
  715.     MenuFlagSet Flags;  /* Menu flags */
  716.  
  717.     union   /* Menu or command - Variant section */
  718.     {
  719.         struct      /* Menu information */
  720.         {
  721.             Byte MenuNum;       /* Menu number */
  722.             Char mPrompt[21];   /* Menu prompt unless "flag3" active */
  723.             Char Password[16];  /* Menu password */
  724.             Byte FallBack;      /* Fallback menu number */
  725.             Char HelpFile[8];   /* Help file ID name */
  726.             Byte StartHelp;     /* Starting help level 0=default */
  727.             Byte Location;      /* Menu location                     */
  728.                                 /*   (0=Main, 1=File, 2=ReadMessage) */
  729.         }
  730.         vMenu;
  731.         struct      /* Command information */
  732.         {
  733.             Byte Pkey;          /* Command PKey */
  734.             Char Pdata[21];     /* Command PData */
  735.             Char Shortd[16];    /* Command short description */
  736.             Char CmdKey[13];    /* Command execution key */
  737.         }
  738.         vCommand;
  739.     }
  740.     Menu;
  741. }
  742. MenuRec;
  743.  
  744. /*---------------------------------------------------------------------------*/
  745.  
  746. typedef struct      /* Macro list - MACROS.LST */
  747. {
  748.     Integer UserN;      /* User number of macro owner */
  749.     Char Key[4][161];   /* Text for each of the macros */
  750. }
  751. MacroRec;
  752.  
  753. /*---------------------------------------------------------------------------*/
  754.  
  755. typedef struct      /* Single protocols - SPROT.DAT */
  756. {
  757.     Char Key[13];           /* Execution key */
  758.     Char Desc[61];          /* Description */
  759.     Word MinBaud;           /* Minimum baud rate to use */
  760.     Word MaxBaud;           /* Maximum baud rate to use */
  761.     Byte DSL;               /* DSL required */
  762.     Char TempLog[53];       /* Temp log path and name */
  763.     Char UlLog[53];         /* UL log path and name */
  764.     Char DlLog[53];         /* DL log path and name */
  765.     Char UlString[71];      /* UL string for DOS call */
  766.     Char DlString[71];      /* DL string for DOS call */
  767.     Boolean GoodCode;       /* Result codes mean good transfer */
  768.     Byte DlCode[6];         /* DL error level result codes */
  769.     Byte ULcode[6];         /* DL error level result codes */
  770. }
  771. SprotocolRec;
  772.  
  773. typedef struct      /* Batch protocols - BPROT.DAT */
  774. {
  775.     Char Key[13];           /* Execution key */
  776.     Char Desc[61];          /* Description */
  777.     Word MinBaud;           /* Minimum baud rate to use */
  778.     Word MaxBaud;           /* Maximum baud rate to use */
  779.     Byte DSL;               /* DSL required */
  780.     Char UlString[71];      /* UL string for DOS call */
  781.     Char DlString[71];      /* DL string for DOS call */
  782.     Char UlList[53];        /* UL file list file path and name */
  783.     Char DlList[53];        /* DL file list file path and name */
  784.     Char TempLog[53];       /* Temp log path and name */
  785.     Char UlLog[53];         /* UL log path and name */
  786.     Char DlLog[53];         /* DL log path and name */
  787.     Byte MaxCmdLen;         /* Maximum command line length */
  788.     Byte PosFn;             /* Position of filename in log */
  789.     Byte PosStatus;         /* Position of status in log */
  790.     Boolean GoodCode;       /* Result codes mean good transfer */
  791.     Char DlCode[6][11];     /* DL status result codes */
  792.     Char ULcode[6][11];     /* UL status result codes */
  793. }
  794. BprotocolRec;
  795.  
  796. /*---------------------------------------------------------------------------*/
  797.  
  798. typedef struct      /* Validation information - VALIDATE.DAT */
  799. {
  800.     Char Key;           /* Execution key */
  801.     Char Desc[161];     /* Descrip sent to user after validation */
  802.                         /* 76 max real length - Rest for color */
  803.     Byte SL;            /* SL to set on validation */
  804.     Byte DSL;           /* DSL to set on validation */
  805.     Word Credit;        /* Credit in cents to set on validation */
  806.     Word Points;        /* File points to set on validation */
  807.     Word TimeBank;      /* Time bank minutes to set on validation */
  808.     ArFlagset Ar;       /* AR flags to set on validation */
  809.     FlagSet Flags;      /* Special flags to set on validation */
  810.     Word UnusedWord;    /* Reserved */
  811. }
  812. ValidationRec;
  813.  
  814. /*---------------------------------------------------------------------------*/
  815.  
  816. typedef struct      /* Event flags */
  817. {
  818.     Bit UnknownEvent : 1;       /* 1-1. Unknown */
  819.     Bit EventIsExternal : 1;    /* 1-2. External/Internal */
  820.     Bit EventIsActive : 1;      /* 1-3. Active/InActive */
  821.     Bit EventIsShell : 1;       /* 1-4. Shell/Error */
  822.     Bit EventIsMonthly : 1;     /* 1-5. Monthly/Daily */
  823.     Bit EventIsPermission : 1;  /* 1-6. Permission/Restriction */
  824.     Bit EventIsChat : 1;        /* 1-7. Chat Event */
  825.     Bit EventIsSoft : 1;        /* 1-8. Soft/Hard */
  826.  
  827.     Bit BaudIsActive : 1;       /* 2-1. Baud Rate Flag */
  828.     Bit SLisActive : 1;         /* 2-2. SL Flag */
  829.     Bit DSLisActive : 1;        /* 2-3. DSL Flag */
  830.     Bit ARisActive : 1;         /* 2-4. ARflag required */
  831.     Bit InRatioIsActive : 1;    /* 2-5. InRatioFlag */
  832.     Bit TimeIsActive : 1;       /* 2-6. Time Flag */
  833.     Bit SetARisActive : 1;      /* 2-7. Set AR flag */
  834.     Bit ClearARisActive : 1;    /* 2-8. Clear AR Flag */
  835.  
  836.     Bit uuEvent24 : 1;          /* Byte 3 ... */
  837.     Bit uuEvent23 : 1;
  838.     Bit uuEvent22 : 1;
  839.     Bit uuEvent21 : 1;
  840.     Bit uuEvent20 : 1;
  841.     Bit uuEvent19 : 1;
  842.     Bit uuEvent18 : 1;
  843.     Bit uuEvent17 : 1;
  844.  
  845.     Bit uuEvent16 : 1;          /* Byte 4 ... */
  846.     Bit uuEvent15 : 1;
  847.     Bit uuEvent14 : 1;
  848.     Bit uuEvent13 : 1;
  849.     Bit uuEvent12 : 1;
  850.     Bit uuEvent11 : 1;
  851.     Bit uuEvent10 : 1;
  852.     Bit uuEvent9 : 1;
  853.  
  854.     Bit uuEvent81 : 1;          /* Byte 5 ... */
  855.     Bit uuEvent7 : 1;
  856.     Bit uuEvent6 : 1;
  857.     Bit uuEvent5 : 1;
  858.     Bit uuEvent4 : 1;
  859.     Bit uuEvent3 : 1;
  860.     Bit uuEvent2 : 1;
  861.     Bit uuEvent1 : 1;
  862. }
  863. EventType;  /* 5 bytes used for 40 flags */
  864.  
  865. typedef Byte EventDaysType;     /* Set of event days     */
  866.                                 /* (bits 0-6 = Sun..Sat) */
  867.  
  868. /*****************************************/
  869. /* The Record Structure of the EventFile */
  870. /*****************************************/
  871.  
  872. typedef struct      /* Events - EVENTS.DAT */
  873. {
  874.     EventType EventFlags;       /* Kinds of Events Supported */
  875.     Byte EventDayOfMonth;       /* If monthly, the Day of Month */
  876.     EventDaysType EventDays;    /* If Daily, the Days Active */
  877.     Word EventStartTime;        /* Start Time in Min from Mid. */
  878.     Word EventFinishTime;       /* Finish Time */
  879.     Char EventDesc[33];         /* Description of the Event */
  880.     Char EventQualMsg[65];      /* Msg/Path if he qualifies */
  881.     Char EventNotQualMsg[65];   /* Msg/Path if he doesn't */
  882.     Byte EventPreTime;          /* Min. B4 event to rest. Call */
  883.     Boolean EventOffHook;       /* Take phone Offhook ? */
  884.     Char EventLastDate[9];      /* Last Date Executed */
  885.     Byte EventErrorLevel;       /* For Ext Event ErrorLevel */
  886.     Char EventShellPath[9];     /* File for Ext Event Shell */
  887.     Word LoBaud;                /* Low baud rate limit */
  888.     Word HiBaud;                /* High baud rate limit */
  889.     Byte LoSL;                  /* Low SL limit */
  890.     Byte HiSL;                  /* High SL limit */
  891.     Byte LoDSL;                 /* Low DSL limit */
  892.     Byte HiDSL;                 /* High DSL limit */
  893.     Char ARflagRequired;        /* AR flag required */
  894.     Word MaxTimeAllowed;        /* Max Time per user this event */
  895.     Char SetARflag;             /* AR Flag to Set */
  896.     Char ClearARflag;           /* AR Flag to Clear */
  897.     Byte EventUnused[128];      /* Reserved */
  898. }
  899. EventRecordType;
  900.  
  901. /*---------------------------------------------------------------------------*/
  902.  
  903. #define MAXMODEMRESULTCODES 45  /* Maximum number of modem result codes */
  904.  
  905. typedef Byte modemresulttype;   /* Modem result type */
  906.  
  907. #define RESULTERROR             0       /* Command error */
  908. #define RESULTOK                1       /* Command accepted */
  909. #define RESULTRING              2       /* Phone ringing */
  910. #define RESULTNOCARRIER         3       /* Connect attempt failed */
  911. #define RESULTCONNECT           4       /* Connect succcessful */
  912. #define RESULTWAITSCREEN        5       /* Go to wait screen */
  913. #define RESULTLOCALLOGON        6       /* Logcal logon */
  914. #define RESULTSHELLBATCH        7       /* Shell to batch file */
  915. #define RESULTEXITERRORLEVEL    8       /* Exit system with error level */
  916. #define RESULTEXITSYSTEM        9       /* Exit system with error level 255 */
  917. #define RESULTNODIALTONE        10      /* Reserved */
  918. #define RESULTRINGING           11      /* Reserved */
  919. #define RESULTBUSY              12      /* Reserved */
  920. #define RESULTNOANSWER          13      /* Reserved */
  921. #define RESULTVOICE             14      /* Reserved */
  922.  
  923. typedef struct
  924. {
  925.     modemresulttype typeofresult;   /* Type of result */
  926.     Char result[51];                /* Test of result */
  927.     Longint connectrate;            /* Connect rate modem to modem */
  928.     Longint realrate;               /* Real rate computer to modem */
  929.     Longint controlcode;            /* Error level or startup code */
  930.     Boolean fullduplex;             /* Full duplex operation? */
  931.     Boolean errorcorrecting;        /* Error correcting modem? */
  932.     Byte Unused[8];                 /* Reserved */
  933. }
  934. resultrec;
  935.  
  936. /**********************************************************/
  937. /* Modem string mapping codes:                            */
  938. /*                                                        */
  939. /* Char.  Name             Action                         */
  940. /* -----  ---------------  ------------------------------ */
  941. /*  ^     Carat            Control code of next character */
  942. /*  |     Pipe, Split Bar  Carriage return sent           */
  943. /*  `     Accent Mark      1/20th second delay            */
  944. /*  ~     Tilde            1/2 second delay               */
  945. /*  ^-    Carat & Minus    Lower DTR line                 */
  946. /*  ^+    Carat & Plus     Raise DTR line                 */
  947. /**********************************************************/
  948.  
  949. typedef struct      /* Modem record - MODEM.DAT */
  950. {
  951.     Boolean uuunused;           /* Unused */
  952.     Char modemdescription[65];  /* Description on modem */
  953.     Byte characterdelay;        /* Miliseconds */
  954.     Boolean ctsrts;             /* Hardware flow control active */
  955.     Boolean samering;           /* Reserved */
  956.     Boolean nocollide;          /* Reserved */
  957.     Byte numberresults;         /* Number of modem result codes defined */
  958.     resultrec result[MAXMODEMRESULTCODES]; /* Array of results */
  959.     Char preinitialization[65]; /* Pre-initialization string */
  960.     Char initialization[65];    /* Initialization string */
  961.     Char answer[65];            /* Answer string */
  962.     Char busy[65];              /* Busy string */
  963.     Char hangupprimary[65];     /* Hangup primary string */
  964.     Char hangupsecondary[65];   /* Hangup secondard string */
  965.     Char afterhangup[65];       /* After hangup string */
  966.     Char exitsystem[65];        /* Exit system string */
  967.     Char predial[65];           /* Reserved */
  968.     Char dialprefix[65];        /* Reserved */
  969.     Char dialsuffix[65];        /* Reserved */
  970.     Longint waitbaud;           /* Init modem speed */
  971.     Boolean lockedbaud;         /* Is baud rate locked - Not used by T.A.G. */
  972.     Byte ecefficiency;          /* Error correcting efficiency */
  973.     Byte ncefficiency;          /* Normal connect efficiency */
  974.     Byte Unused[249];           /* Reserved */
  975. }
  976. modemrec;
  977.  
  978. /*---------------------------------------------------------------------------*/
  979.  
  980. #define MAXSUBOPS   10      /* Maximum number of message section SubOps */
  981.  
  982. typedef Byte NoYesForcedType;   /* Message section type */
  983.  
  984. #define NO          0       /* Anonymous messages not allowed */
  985. #define YES         1       /* Anonymous messages allowed */
  986. #define FORCED      2       /* Messages forced anonymous */
  987. #define ATUNUSED    3       /* Reserved */
  988.  
  989. /************************************/
  990. /* Standard Attributes for Messages */
  991. /************************************/
  992.  
  993. typedef struct
  994. {
  995.     Bit Msg_Private : 1;                    /* 1  fPrivate  */
  996.                                             /*    RaPrivate */
  997.     Bit Msg_Crash : 1;                      /* 2  fCrash */
  998.                                             /*    Crash  */
  999.     Bit Msg_Received : 1;                   /* 3  fReceived */
  1000.                                             /*    Received  */
  1001.     Bit Msg_Sent : 1;                       /* 4  fSent */
  1002.                                             /*    Sent  */
  1003.     Bit Msg_FileAttached : 1;               /* 5  fFileAttached */
  1004.                                             /*    FileAttach    */
  1005.     Bit Msg_KillSent : 1;                   /* 6  fKillSent */
  1006.                                             /*    KillSent  */
  1007.     Bit Msg_Local : 1;                      /* 7  fLocal       */
  1008.                                             /*    LocalMessage */
  1009.     Bit Msg_ReturnReceiptRequest : 1;       /* 8  fReportReceiptRequest */
  1010.                                             /*    RequestReceipt        */
  1011.     Bit Msg_IsReturnReceipt : 1;            /* 9  fIsReturnReceipt */
  1012.                                             /*    ReturnReceipt    */
  1013.     Bit Msg_AuditRequest : 1;               /* 10 fAuditRequest */
  1014.                                             /*    AuditRequest  */
  1015.     Bit Msg_Fido_InTransit : 1;             /* 11 fInTransit */
  1016.     Bit Msg_Fido_Orphan : 1;                /* 12 fOrphan */
  1017.     Bit Msg_Fido_HoldForPickup : 1;         /* 13 fHoldForPickup */
  1018.     Bit Msg_Fido_Unusedbit10 : 1;           /* 14 fUnusedbit10 */
  1019.     Bit Msg_Fido_FileRequest : 1;           /* 15 fFileRequest */
  1020.     Bit Msg_Fido_FileUpdateRequest : 1;     /* 16 fFileUpdateRequest */
  1021.     Bit Msg_Ra_Deleted : 1;                 /* 17 Deleted */
  1022.     Bit Msg_Ra_NetmailPendingExport : 1;    /* 18 NetmailPendingExport */
  1023.     Bit Msg_Ra_NetMailMessage : 1;          /* 19 NetMailMessage */
  1024.     Bit Msg_Ra_EchomailPendingExport : 1;   /* 20 EchomailPendingExport */
  1025.     Bit Msg_Ra_UnusedMsgbit7 : 1;           /* 21 UnusedMsgbit7 */
  1026.     Bit Msg_Ra_UnusedNetbit7 : 1;           /* 22 UnusedNetbit7 */
  1027.     Bit Msg_Unused_Attr1 : 1;               /* 23 Reserved */
  1028.     Bit Msg_Unused_Attr2 : 1;               /* 24 Reserved */
  1029.     Bit Msg_Unused_Attr3 : 1;               /* 25 Reserved */
  1030.     Bit Msg_Unused_Attr4 : 1;               /* 26 Reserved */
  1031.     Bit Msg_Unused_Attr5 : 1;               /* 27 Reserved */
  1032.     Bit Msg_Unused_Attr6 : 1;               /* 28 Reserved */
  1033.     Bit Msg_Unused_Attr7 : 1;               /* 29 Reserved */
  1034.     Bit Msg_Unused_Attr8 : 1;               /* 30 Reserved */
  1035.     Bit Msg_Unused_Attr9 : 1;               /* 31 Reserved */
  1036.     Bit Msg_Unused_Attr10 : 1;              /* 32 Reserved */
  1037. }
  1038. MessageAttrFlagSet;     /* 4 bytes used for 32 flags */
  1039.  
  1040. typedef Byte MBstyle;   /* Message section style flags */
  1041.  
  1042. #define UUMBBSTYLE      0   /* Was For Private Mail Board */
  1043. #define LOCALSTYLE      1   /* Local Board */
  1044. #define ECHOSTYLE       2   /* Echomail, Needs Origin */
  1045. #define NETMAILSTYLE    3   /* Netmail board (Only one I hope!) */
  1046. #define GROUPSTYLE      4   /* For Groupmail Support */
  1047.  
  1048. typedef Byte MBtype;    /* Message section type flags */
  1049.  
  1050. #define UUMBTYPE        0   /* Was For Netmail Board */
  1051. #define FIDOFORMAT      1   /* Fido 1.Msg Format */
  1052. #define RAFORMAT        2   /* Remote Access Format */
  1053.  
  1054. typedef struct      /* Message boards - MBOARDS.DAT */
  1055. {
  1056.     Char Name[65];                  /* Name of the Board */
  1057.     MBstyle Mstyle;                 /* Local/Echo/Netmail */
  1058.     MBtype Mtype;                   /* Message Board Type */
  1059.     Byte RaBoard;                   /* Board Number if RA/QBBS type */
  1060.     Char Path[65];                  /* Directory PathName */
  1061.     Char OriginLine[66];            /* Origin Line */
  1062.     ArFlagType AccessAR;            /* AR flag Required to Access */
  1063.     ArFlagType PostAR;              /* AR flag required to Post */
  1064.     Byte AccessSL;                  /* Security Level Required to Access */
  1065.     Byte PostSL;                    /* Security Level Required to Post */
  1066.     Word MsgCount;                  /* Count of Msgs on the Board */
  1067.     Word MaxMsgs;                   /* Max Number of Messages */
  1068.     Word uuMaxOld;                  /* Max Days for Messages */
  1069.     Char Password[17];              /* Password Required */
  1070.     NoYesForcedType Anon;           /* Anonymous Type */
  1071.     Boolean AllowAnsi;              /* Should we allow ANSI */
  1072.     NoYesForcedType AllowHandle;    /* Should we allow handles */
  1073.  
  1074.     /*********************************************************/
  1075.     /* Message Board SubOpts List  - Up to 10 - User Numbers */
  1076.     /*********************************************************/
  1077.  
  1078.     Integer SubOps[MAXSUBOPS+1];    /* SubOps - Item 0 = How many */
  1079.  
  1080.     Char EchoTag[33];               /* Echo Tag for Writing ECHOMAIL.BBS */
  1081.     Boolean UseOtherAddress;        /* Use something other than system */
  1082.     Byte OldOtherAddress[23];       /* Unused */
  1083.     Byte MenuNumber;                /* Default read message number */
  1084.                                     /*  (if 0, use system default) */
  1085.     Char PrePostFile[9];            /* Prepost file name */
  1086.     Byte MinMsgs;                   /* Minimum number of messages */
  1087.     Char QuoteStart[71];            /* Override starting quote */
  1088.     Char QuoteEnd[71];              /* Override ending quote */
  1089.     Byte OldDefaultAtt[2];          /* Unused */
  1090.     Byte GroupNumber;               /* What group the board belongs */
  1091.     AddressType OtherAddress;       /* The Address to use! */
  1092.     NoYesForcedType RestrictPrivate; /* Private mail status */
  1093.     MessageAttrFlagSet DefaultAttr; /* Default message flags */
  1094.     Byte Reserved[12];              /* Reserved */
  1095. }
  1096. MboardType;
  1097.  
  1098. /*---------------------------------------------------------------------------*/
  1099.  
  1100. typedef Char LastOnType[8][161];    /* Last Few Callers - LASTON.DAT */
  1101.  
  1102. /*---------------------------------------------------------------------------*/
  1103.  
  1104. #define MAXBITS     1024    /* Means a 128 byte bit set, bits 0 to 1023 */
  1105.  
  1106. typedef Byte bitSetType[MAXBITS / 8];   /* Board Flags - ?ZSCAN.DAT */
  1107.  
  1108. /*---------------------------------------------------------------------------*/
  1109.  
  1110. typedef struct      /* Who's online - $WHO.DAT */
  1111. {
  1112.     Boolean Active;
  1113.     Byte Node;              /* Node number for this rec     */
  1114.     Boolean Available;      /* Is he available for anything */
  1115.     Char Uname[37];         /* Users Name                   */
  1116.     Char CityState[31];     /* City and State               */
  1117.     Longint Baud;           /* Baud Rate                    */
  1118.     Byte Paging;            /* Paging Node Number           */
  1119.     Byte InPrivateChat;     /* Node in private chat with    */
  1120.     Boolean InGroupChat;    /* Is he in Group Chat          */
  1121.     Char Desc[65];          /* Long Description             */
  1122. }
  1123. WhoRecType;
  1124.  
  1125. /*---------------------------------------------------------------------------*/
  1126.  
  1127. typedef struct      /* USERON.BBS file version 1.00 */
  1128. {
  1129.     Char Name[36];          /* User name      */
  1130.     Byte Line;              /* Node number    */
  1131.     Word Baud;              /* Connect rate   */
  1132.     Char City[26];          /* City/State     */
  1133.     Boolean DoNotDisturb;   /* Do not disturb */
  1134.     Byte Status;            /* Status         */
  1135. }
  1136. UserOnType100;
  1137.  
  1138. /*---------------------------------------------------------------------------*/
  1139.  
  1140. typedef struct      /* USERON.BBS file version 1.1x */
  1141. {
  1142.     Char Name[36];          /* Real name      */
  1143.     Char Handle[36];        /* User name      */
  1144.     Byte Line;              /* Node number    */
  1145.     Word Baud;              /* Connect rate   */
  1146.     Char City[26];          /* City/State     */
  1147.     Boolean DoNotDisturb;   /* Do not disturb */
  1148.     Byte Status;            /* Status         */
  1149.     Byte Attribute;         /* Attribute      */
  1150. }
  1151. UserOnType11x;
  1152.  
  1153. /*---------------------------------------------------------------------------*/
  1154.  
  1155. #endif
  1156.